home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr26
/
netprog.zip
/
NETPROG.TAR
/
lock
/
lockopen.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-12-17
|
731b
|
39 lines
/*
* Locking routines using a open() system call with both
* O_CREAT and O_EXCL specified.
*/
#include <fcntl.h>
#include <sys/errno.h>
extern int errno;
#define LOCKFILE "seqno.lock"
#define PERMS 0666
my_lock(fd)
int fd;
{
int tempfd;
/*
* Try to create the lock file, using open() with both
* O_CREAT (create file if it doesn't exist) and O_EXCL
* (error if create and file already exists).
* If this fails, some other process has the lock.
*/
while ( (tempfd = open(LOCKFILE, O_RDWR|O_CREAT|O_EXCL, PERMS)) < 0) {
if (errno != EEXIST)
err_sys("open error for lock file");
sleep(1);
}
close(tempfd);
}
my_unlock(fd)
int fd;
{
if (unlink(LOCKFILE) < 0)
err_sys("unlink error for lock file");
}